package com.koron.order.LineHomepage.mapper;


import com.koron.order.LineHomepage.bean.VO.AnalysisReportVO;
import com.koron.order.LineHomepage.bean.VO.ReportGenerationVO;
import com.koron.order.LineHomepage.bean.query.LineOperationAnalysisQuery;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface LineOperationAnalysisMapper {
    //统计线路跳闸报告
    List<AnalysisReportVO> getLineTripCount(@Param("analysisQuery")LineOperationAnalysisQuery analysisQuery);

    /**
     * 缺陷新发现量
     * @param analysisQuery
     * @return
     */
    //统计总缺陷数：在筛选日期范围内创建的缺陷工单为非“草稿”状态的总工单数
    List<AnalysisReportVO> getDefectCount(@Param("analysisQuery")LineOperationAnalysisQuery analysisQuery);

    //停电处理：符合筛选日期内的新发现缺陷工单数中的【基本信息——处理方式】中选项为“排期停电”+“停电立即处理”的总次数
    List<AnalysisReportVO> getDefect01And11(@Param("analysisQuery")LineOperationAnalysisQuery analysisQuery);

//    不停电处理：符合筛选日期内的新发现缺陷工单数中的【基本信息——处理方式】中选项 为“排期不停电”+“不停电立即处理”的总次数
    List<AnalysisReportVO> getDefect00And10(@Param("analysisQuery") LineOperationAnalysisQuery analysisQuery);

    /**
     * 上月缺陷总数
     */
//    总缺陷数：统计上个月的缺陷工单状态除“草稿”、“已归档”、“已作废”、“待处 理”的工单数；
    List<AnalysisReportVO> getDefectTotalLastMonth(@Param("analysisQuery")LineOperationAnalysisQuery analysisQuery);
//    停电处理：同缺陷新发现量停电处理统计逻辑；
    List<AnalysisReportVO> getDefectTotal01And11LastMonth(@Param("analysisQuery")LineOperationAnalysisQuery analysisQuery);
//    不停电处理：同缺陷新发现量停电处理统计逻辑；
    List<AnalysisReportVO> getDefectTotal00And10LastMonth(@Param("analysisQuery")LineOperationAnalysisQuery analysisQuery);


//    消缺情况：统计已归档的缺陷工单归档时间为筛选日期范围的总数；
    List<AnalysisReportVO> getFinishOnTime(@Param("analysisQuery")LineOperationAnalysisQuery analysisQuery);

    List<AnalysisReportVO> getFinish00And10(@Param("analysisQuery")LineOperationAnalysisQuery analysisQuery);

    List<AnalysisReportVO> getFinish01And11(@Param("analysisQuery")LineOperationAnalysisQuery analysisQuery);


//    本月缺陷总数：统计本月缺陷工单状态除“草稿”、“已归档”、“已作废”、“待 处理”的工单数；
    List<AnalysisReportVO> getDefectTotalThisMonth(@Param("analysisQuery")LineOperationAnalysisQuery analysisQuery);

    List<AnalysisReportVO> getDefectTotal00And10ThisMonth(@Param("analysisQuery")LineOperationAnalysisQuery analysisQuery);

    List<AnalysisReportVO> getDefectTotal01And11ThisMonth(@Param("analysisQuery")LineOperationAnalysisQuery analysisQuery);


    List<String> getLineEquipment(@Param("id") String id);

    Integer insertBatch(List<ReportGenerationVO> list);

    List<ReportGenerationVO> selectList(@Param("date") Date date,@Param("names") List<String> equipmentNames);

}
